package sge.DAO;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.DefaultTableModel;
import sge.Datos.ModeloTabla;
import sge.Entidades.*;

public class ExpositorDAO implements ObjetoDAO {

    private final static Logger LOG = Logger.getLogger(UsuarioDAO.class.getName());

    public ExpositorDAO() {
    }

    public boolean crear(Expositor expositor) {
        String consulta = "INSERT INTO expositor"
                + "(id_expositor, documento, nombre, apellido, "
                + "direccion, telefono, email, titulo_academico, perfil_tematico, estado) "
                + "VALUES(NULL, '"
                + expositor.getDocumento() + "', '" + expositor.getNombre() + "', '"
                + expositor.getApellido() + "', '" + expositor.getDireccion() + "', '"
                + expositor.getTelefono() + "', '" + expositor.getEmail() + "', '"
                + expositor.getTituloAcademico() + "', '" + expositor.getPerfilTematico() + "', '"
                + expositor.getEstado() + "');";


        boolean exito = CONEXION.ejecutarSQL(consulta) > 0;;
        if (exito) {
            expositor.setIdExpositor(CONEXION.obtenerUltimoIDGenerado());
        }
        return exito;
    }

    public boolean modificar(Expositor expositor) {
        String consulta = "UPDATE expositor SET "
                + "documento='" + expositor.getDocumento()
                + "', nombre='" + expositor.getNombre() + "', apellido='"
                + expositor.getApellido() + "', direccion='"
                + expositor.getDireccion() + "', telefono='"
                + expositor.getTelefono() + "', email='"
                + expositor.getEmail() + "', titulo_academico='"
                + expositor.getTituloAcademico() + "', perfil_tematico='"
                + expositor.getPerfilTematico() + "', estado='"
                + expositor.getEstado() + "' WHERE id_expositor='"
                + expositor.getIdExpositor() + "';";


        boolean exito = CONEXION.ejecutarSQL(consulta) > 0;;
        return exito;
    }

    public boolean eliminar(int id_expositor, int estado) {
        String consulta = "UPDATE expositor SET "
                + "estado='" + estado + "' "
                + "WHERE id_expositor='" + id_expositor + "';";
            

        boolean exito = CONEXION.ejecutarSQL(consulta) > 0;;
        return exito;
    }

    public boolean consultar(Expositor expositor) {

        String consulta = "SELECT * FROM expositor";
        if (expositor.getIdExpositor() != null) {
            consulta += " WHERE id_expositor = '" + expositor.getIdExpositor() + "';";
        } else if (expositor.getDocumento() != null) {
            consulta += " WHERE documento = '" + expositor.getDocumento() + "';";
        } else {
            return false;
        }
        PreparedStatement ps =
                CONEXION.crearSentenciaPreparada(consulta);

        try {
            ResultSet rs = ps.executeQuery();

            if (rs.next()) {
                expositor.setIdExpositor(rs.getInt(1));
                expositor.setDocumento(rs.getString(2));//documento
                expositor.setNombre(rs.getString(3));//nombre
                expositor.setApellido(rs.getString(4));//apellido
                expositor.setDireccion(rs.getString(5));//direccion
                expositor.setTelefono(rs.getString(6));//telefono
                expositor.setEmail(rs.getString(7));//email
                expositor.setTituloAcademico(rs.getString(8));//titulo
                expositor.setPerfilTematico(rs.getString(9));//perfil
                expositor.setEstado(rs.getString(10));
                return true;
            }
        } catch (SQLException ex) {
            Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
    }

    public ModeloTabla seleccionar() {
        String consulta = "SELECT * FROM expositor";
        ArrayList<String> cols = new ArrayList<>();

        cols.add("Id expositor");
        cols.add("Documento");
        cols.add("Nombre");
        cols.add("Apellido");
        cols.add("Direccion");
        cols.add("Telefono");
        cols.add("Email");
        cols.add("Titulo academico");
        cols.add("Perfil tematico");
        cols.add("Estado");

        ModeloTabla modelo = new ModeloTabla(consulta, cols, false);

        return modelo;

    }
}
